package Lee_code;

/**
 * @author blh
 * @date 2024年08月01日 8:18
 */
public class Lee_134_81 {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int len = gas.length;
        for (int i = 0; i < len; i++) {
            if (gas[i] == cost[i]) {
                continue;
            }
            if (gas[i] >= cost[i]) {
                // 从当前站点出发
                // 一共走len步
                int backGas = 0;
                for (int j = 0; j < len; j++) {
                    int curIndex = (i + j) % len;
                    int curGas = backGas + gas[curIndex];
                    if (cost[curIndex] == 0) {
                        backGas = curGas;
                    } else if (curGas >= cost[curIndex]) {
                        if (j == len - 1) {
                            return i;
                        }
                        // 汽油充足
                        backGas = curGas - cost[curIndex];
                    } else {
                        break;
                    }
                }
            }
        }
        return -1;
    }
}
